<?php


namespace DesignPatterns\SimpleFactory;

/**
 * Class 生动实现计算器
 * @package DesignPatterns\SimpleFactory
 */
class Bad
{

    /**
     * 计算结果
     *
     * @param int $numberA
     * @param string $operate
     * @param int $numberB
     * @return int|float|int
     */
    public function getResult($numberA, $operate, $numberB)
    {
        switch ($operate) {
            case '+':
                $result = $numberA + $numberB;
                break;
            case '-':
                $result = $numberA - $numberB;
                break;
            case '*':
                $result = $numberA * $numberB;
                break;
            case '/':
                if ($numberB != 0) {
                    $result = $numberA / $numberB;
                } else {
                    throw new \InvalidArgumentException('除数不能为0');
                }
                break;
            default:
                throw new \InvalidArgumentException('暂不支持的运算');
        }
        return $result;
    }

}

$program = new Bad();
$result = $program->getResult(1, '+', 2);
echo $result;


//但是这种方式很不OOP；
//把逻辑判断流程和实现代码各种混杂在一起不利于扩展；
//就比如说除法的 case 里面的判断；
//这时候我们可以把各种运算独立封装；
//先建立一个 abstract ；
//Operation.php